﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using NjaNjam.MongoRepository;
using NjamNjam.Model.Entities;
using NjamNjamAdminApp.Interfaces;
using NjamNjamAdminApp.Models;

namespace NjamNjamAdminApp.Views
{
    public partial class PretragaVrstePonude : DevExpress.XtraEditors.XtraForm, IView
    {
        private KriterijumPozicija m_KriterijumPozicija = new KriterijumPozicija();

        MongoRepository m_Repository = new MongoRepository();
            
        public PretragaVrstePonude()
        {
            InitializeComponent();
            kriterijumPozicijaBindingSource.DataSource = m_KriterijumPozicija;
            btnPretraziPoziciju.Click += (s, e) => OnPronadji();
            btnPretrazi.Click += (s, e) => OnPretrazi();
            gridView1.FocusedRowChanged += (s, e) => OnPromenjenIzborVrstePonude(e.FocusedRowHandle);
        }

        private void OnPromenjenIzborVrstePonude(int focusedRowHandle)
        {
            var vrstaPonude = gridView1.GetRow(focusedRowHandle) as VrstaPonude;
            if (vrstaPonude == null) return;
            var shell = ((IShell)MdiParent);

            try
            {
                shell.StarLongRunningOperation("Pretraga u toku...");
                var ponuda = m_Repository.VratiPonuduUOkolini(vrstaPonude.Id, m_KriterijumPozicija.Latituda,
                                                     m_KriterijumPozicija.Longituda, m_KriterijumPozicija.Razdaljina / 1000);
                ponudaBindingSource.DataSource = ponuda;
            }
            catch (Exception exc)
            {
                shell.ShowWarning("Pretraga neuspešna: " + exc.Message);
            } finally
            {
                shell.StopLongRunningOperation();
            }
        }

        private void OnPretrazi()
        {
            var shell = ((IShell)MdiParent);
            try
            {
                shell.StarLongRunningOperation("Pretraga u toku...");
                var vrstePonude = m_Repository.VratiVrstePonudeUOkolini(m_KriterijumPozicija.Latituda, m_KriterijumPozicija.Longituda,
                                                          m_KriterijumPozicija.Razdaljina / 1000);
                vrstaPonudeBindingSource.DataSource = vrstePonude;
            }
            catch (Exception exc)
            {
                shell.ShowWarning("Pretraga neuspešna: " + exc.Message);
            } finally
            {
                shell.StopLongRunningOperation();
            }
        }


        public void NoviUnos()
        {
        }

        public void Sacuvaj()
        {
        }

        public void Obrisi()
        {
        }

        public void Osvezi()
        {
        }

        public void Izvezi()
        {
        }

        private void OnPronadji()
        {
            var shell = ((IShell)MdiParent);
            try
            {
                shell.StarLongRunningOperation("Pretraga u toku...");
                using (var dlg = new AddressSearchView(string.Empty))
                {
                    dlg.ShowDialog(this);
                    if (dlg.SearchResult != null)
                    {
                        m_KriterijumPozicija.Latituda = dlg.SearchResult.Latitude;
                        m_KriterijumPozicija.Longituda = dlg.SearchResult.Longitude;
                    }
                }
            }
            catch (Exception exc)
            {
                shell.ShowWarning("Pretraga neuspešna: " + exc.Message);
            } finally
            {
                shell.StopLongRunningOperation();
            }
        }
    }
}